﻿Public Class Busqueda_autores
    Dim datos As AccesoADatos
    Dim carga As ManejoDeCarga

    Private Sub btn_nuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_nuevo.Click
        Dim abmAutores As New Autores()
        abmAutores.ShowDialog()
    End Sub

    Private Sub Busqueda_autores_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        datos = New AccesoADatos()
        carga = New ManejoDeCarga()
        carga_grilla("")
    End Sub

    Private Sub carga_grilla(ByRef where As String)
        If where = "" Then
            carga.cargarGrilla(grd_autoresactuales, "apellido+', '+nombre AS 'Autor', nacionalidad AS 'Nacionalidad', id_autor", _
                               "Autor")
        Else
            carga.cargarGrilla(grd_autoresactuales, "a.apellido+ ', ' +a.nombre AS 'Autor', a.nacionalidad AS 'Nacionalidad', a.id_autor", _
                               "Autor a", where)
        End If
        grd_autoresactuales.Columns(2).Visible = False
    End Sub

    Private Sub btn_buscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_buscar.Click
        If validar_campos_de_busqueda() Then
            Dim clausulas As Integer = 0
            Dim where As String = ""
            If txt_buscarnombre.Text <> "" Then
                If validarBuscarNombre() Then
                    where = "nombre LIKE '%" & txt_buscarnombre.Text & "%'"
                    clausulas += 1
                End If
            End If
            If txt_buscarapellido.Text <> "" Then
                If validarBuscarApellido() Then
                    If (clausulas > 0) Then
                        where &= " and apellido LIKE '%" & txt_buscarapellido.Text & "%'"
                        clausulas += 1
                    Else
                        where = "apellido LIKE '%" & txt_buscarapellido.Text & "%'"
                    End If
                End If
            End If
            Try
                carga_grilla(where)
                pnl_controlesConfirmacion.Enabled = True
            Catch ex As OleDb.OleDbException
                MessageBox.Show("Debe completar los campos correctamente", "Error de búsqueda", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                limpiar_campos()
            End Try
        End If
    End Sub

    Private Function validar_campos_de_busqueda() As Boolean
        Dim validacion As Boolean = True
        If txt_buscarnombre.Text = "" And txt_buscarapellido.Text = "" Then
            MessageBox.Show("Debe completar al menos un campo de búsqueda", "Error en la búsqueda", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            validacion = False
        End If
        Return validacion
    End Function

    Private Function validarBuscarNombre() As Boolean
        If IsNumeric(txt_buscarNombre.Text) Then
            MessageBox.Show("El nombre debe ser texto", "Búsqueda no realizada", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Return False
        End If
        Return True
    End Function

    Private Function validarBuscarApellido() As Boolean
        If IsNumeric(txt_buscarapellido.Text) Then
            MessageBox.Show("El apellido debe ser texto", "Búsqueda no realizada", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Return False
        End If
        Return True
    End Function

    Private Sub limpiar_campos()
        txt_buscarnombre.Clear()
        txt_buscarapellido.Clear()
        carga_grilla("")
    End Sub

    Private Sub btn_cancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_cancelar.Click
        Dim mensaje As String = "¿Esta seguro que desea cancelar la operación actual?"
        If MessageBox.Show(mensaje, "Confirmación", MessageBoxButtons.YesNo, _
                           MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
            Me.Close()
        End If
    End Sub

    Private Sub btn_salir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If System.Windows.Forms.DialogResult.OK = MessageBox.Show("Cerrar esta ventana?", "Importante", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) Then
            Me.Close()
        End If
    End Sub

    Private Sub btn_agregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_agregar.Click
        If (Not (grd_autoresactuales.SelectedRows Is Nothing)) Then
            If (Not (lst_autoresAgregados.Items.Contains(grd_autoresactuales.SelectedRows.Item(0).Cells(0).Value.ToString()))) Then
                lst_autoresAgregados.Items.Add(grd_autoresactuales.SelectedRows.Item(0).Cells(0).Value.ToString())
            Else
                MessageBox.Show("El autor elegido ya está en la lista.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If (Not (lst_autoresAgregados.SelectedItems Is Nothing)) Then
            lst_autoresAgregados.Items.Remove(lst_autoresAgregados.SelectedItem)
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_aceptar.Click
        Dim frm_libros As Abm_libros
        frm_libros = Owner
        Dim ban As Integer = 0
        Dim listaAutores As New List(Of String)()
        For i As Integer = 0 To (lst_autoresAgregados.Items.Count - 1)
            For j As Integer = 0 To (frm_libros.lst_autores.Items.Count - 1)
                If frm_libros.lst_autores.Items(j) <> lst_autoresAgregados.Items(i) Then
                    ban = 0
                Else
                    ban = 1
                    Exit For
                End If
            Next
            If ban = 0 Then
                frm_libros.lst_autores.Items.Add(lst_autoresAgregados.Items(i))
            End If
        Next
        Me.Close()
    End Sub

    Private Sub txt_buscarapellido_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_buscarapellido.TextChanged
        If (txt_buscarapellido.Text = "" And txt_buscarnombre.Text = "") Then
            carga_grilla("")
        End If
    End Sub

    Private Sub txt_buscarnombre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_buscarnombre.TextChanged
        If (txt_buscarnombre.Text = "" And txt_buscarapellido.Text = "") Then
            carga_grilla("")
        End If
    End Sub
End Class